SRC_DIR := src/
OBJ_DIR := obj/

FC = ifort 
temp := $(shell mkdir -p $(OBJ_DIR))

LIB = -I${MKLROOT}/include
mod   := -module $(OBJ_DIR)
FFLAGS:=-O3 -132 -mkl=sequential -qopenmp $(mod)

pesPath := ./src/pes
pes_src_1 := $(wildcard src/pes/*.f90)
pes_src_2 := $(wildcard src/pes/*.f)
pes_obj_1 := $(patsubst src/pes/%.f90, obj/%.o, $(pes_src_1))
pes_obj_2 := $(patsubst src/pes/%.f, obj/%.o, $(pes_src_2))

pes_obj_all := $(pes_obj_1) $(pes_obj_2)

all: dmc_parallel.out
.PHONY:all
dmc_parallel.out: ${OBJ_DIR}dmc_parallel_main.o ${OBJ_DIR}mass.o ${OBJ_DIR}pesModule.o $(OBJ_DIR)pes_interface.o $(pes_obj_1) $(pes_obj_2)
	$(FC) $(FFLAGS) $(LIB) $^  -o $@ $(LINKFLAGS)

$(OBJ_DIR)pesModule.o : $(SRC_DIR)pesModule.f90
	$(FC) $(FFLAGS) $(LIB) -c $< -o $@

$(OBJ_DIR)dmc_parallel_main.o: $(SRC_DIR)dmc_parallel_main.f90 $(OBJ_DIR)mass.o $(OBJ_DIR)pes_interface.o
	$(FC) $(FFLAGS) $(LIB) -c $< -o $@

$(OBJ_DIR)mass.o: $(SRC_DIR)mass.f
	$(FC) $(FFLAGS) $(LIB) -c $< -o $@

$(OBJ_DIR)pes_interface.o: $(SRC_DIR)pes_interface.f90 $(pes_obj_all) $(OBJ_DIR)pesModule.o
	$(FC) $(FFLAGS) $(LIB) -c $< -o $@

$(OBJ_DIR)%.o: $(SRC_DIR)pes/%.f90 $(OBJ_DIR)pesModule.o
	$(FC) $(FFLAGS) $(LIB) -c $< -o $@

$(OBJ_DIR)%.o: $(SRC_DIR)pes/%.f $(OBJ_DIR)pesModule.o
	$(FC) $(FFLAGS) $(LIB) -c $< -o $@

clean:
	rm -f $(OBJ_DIR)*.o $(OBJ_DIR)*.mod $(pes_obj_1) $(pes_obj_2)
